package com.imooc.service;

import com.imooc.dataobject.ProductInfo;
import com.imooc.dto.CartDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * FileName: ProductService.java
 * Description: 商品服务类
 *
 * @author HuangRI(874668739 @ qq.com)
 * @version 1.0
 * @date 2020/12/16
 */
public interface ProductService {

    /**
     * 根据ID查询商品
     * @param productId ID
     * @return 商品
     */
    ProductInfo findOne(String productId);

    /**
     * 查询所有在架的商品列表
     * @return 所有在架的商品列表
     */
    List<ProductInfo> findUpAll();

    /**
     * 分页查询所有商品列表
     * @param pageable 分页条件
     * @return 商品列表
     */
    Page<ProductInfo> findAll(Pageable pageable);

    /**
     * 新增|更新
     * @param productInfo ProductInfo
     * @return ProductInfo
     */
    ProductInfo save(ProductInfo productInfo);

    /**
     * 加库存
     * @param cartDTOs List<CartDTO>
     */
    void increaseStock(List<CartDTO> cartDTOs);

    /**
     * 减库存
     * @param cartDTOs List<CartDTO>
     */
    void decreaseStock(List<CartDTO> cartDTOs);

    /**
     * 上架
     * @param productId
     * @return
     */
    ProductInfo onSale(String productId);

    /**
     * 下架
     * @param productId
     * @return
     */
    ProductInfo offSale(String productId);
}
